Skip to content

Add collapsible sections to all configurator panels - #433

Merged
jackgranatowski merged 4 commits into
mainfrom
claude/color-controls-panel-m1j9di
Jun 27, 2026
Merged

Add collapsible sections to all configurator panels#433
jackgranatowski merged 4 commits into
mainfrom
claude/color-controls-panel-m1j9di

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Add expand/collapse functionality to all major sections across the configurator panels, allowing users to hide less-frequently-used settings and reduce visual clutter.

Changes

  • MiscPanel: Added collapse toggles to 7 sections (Touch target, Scroll behavior, Z-index, Text selection, Focus ring, Component sizes, Caret links)
  • BordersPanel: Added collapse toggles to 7 sections (Border color, Border widths, Line styles, Dividers, Focus ring, Radius scale, Radius preview)
  • EffectsPanel: Added collapse toggles to 6 sections (Blur, Opacity, Scrim, Scrollbar, Scroll shadow, Text shadow)
  • LayoutPanel: Added collapse toggles to 6 sections (Container widths, Center wrapper, Auto grid, Header height, Sticky offset, Sidebar)
  • MotionPanel: Added collapse toggles to 7 sections (Global scale, Theme transition, Duration overrides, Stagger base, Easing curves, Animation demo, Duration preview)
  • MacrosPanel: Added collapse toggles to 5 sections (Flow, Line clamp, Aspect, Scroll shadow, Scrim)
  • SpacingPanel: Added collapse toggles to 4 sections (Layout gap, Density presets, Modular scale, Space preview)
  • ShadowsPanel: Added collapse toggles to 4 sections (Shadow appearance, Shadow color, Glow, Elevation preview)
  • ColorsPanel: Added collapse toggles to 3 sections (Brand sources, Text contrast, Shade curve)
  • TypographyPanel: Added collapse toggles to 6 sections (Font families, Per-type, Body text, Display type, Modular scale, Scale preview)
  • WcagPanel: Added collapse toggles to 2 sections (Pair checker, Matrix)

Implementation Details

  • Each section now has a clickable header button with an up/down arrow indicator (▲/▼)
  • State is managed with Svelte's $state reactive variable for each section
  • Collapsed sections hide their content with {#if showSection} conditional blocks
  • All sections default to expanded (true) for backward compatibility
  • Consistent styling across all panels using the same button and indicator classes

https://claude.ai/code/session_016G1SLZmmZy4d71nYpotZbX

Summary by CodeRabbit

  • New Features
    • Added collapsible sections across the configurator panels, making it easier to expand only the settings you need.
    • Several preview-heavy areas are now hidden by default and can be toggled open on demand.
    • Updated contrast, gradients, shadows, typography, spacing, motion, layout, effects, and WCAG sections with clearer show/hide controls.
    • Added a new mini palette preview in the color tools for quicker brand color review.

…ni palettes + fade gradient fix

- Make Brand color sources, Text contrast, and Shade/tint curve sections
  collapsible (start expanded), matching the existing LumLocker/Status/Gradients pattern
- Add Mini palettes dynamic preview in Shade/tint curve: shows all 5 brand
  colors × all 11 palette steps, with shared light/dark toggle linked to
  the existing curve preview toggle
- Fade gradients (fade-right/left/up/down) no longer show direction-change
  buttons since their direction is their identity; brand gradients keep
  the angle/direction controls

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016G1SLZmmZy4d71nYpotZbX
@coderabbitai

coderabbitai Bot commented Jun 27, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jackgranatowski, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 47 minutes and 43 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d3924b94-cf97-41a8-806d-bf09c909b0f1

📥 Commits

Reviewing files that changed from the base of the PR and between 288dc9b and ddd9350.

📒 Files selected for processing (15)
  • .claude/hooks/session-start.sh
  • .claude/settings.json
  • .gitignore
  • configurator/src/components/panels/AllTokensTab.svelte
  • configurator/src/components/panels/BordersPanel.svelte
  • configurator/src/components/panels/ColorsPanel.svelte
  • configurator/src/components/panels/EffectsPanel.svelte
  • configurator/src/components/panels/LayoutPanel.svelte
  • configurator/src/components/panels/MacrosPanel.svelte
  • configurator/src/components/panels/MiscPanel.svelte
  • configurator/src/components/panels/MotionPanel.svelte
  • configurator/src/components/panels/ShadowsPanel.svelte
  • configurator/src/components/panels/SpacingPanel.svelte
  • configurator/src/components/panels/TypographyPanel.svelte
  • configurator/src/components/panels/WcagPanel.svelte
📝 Walkthrough

Walkthrough

All eleven configurator panel components (BordersPanel, ColorsPanel, EffectsPanel, LayoutPanel, MacrosPanel, MiscPanel, MotionPanel, ShadowsPanel, SpacingPanel, TypographyPanel, WcagPanel) are updated to make their subsections collapsible via new $state boolean flags and toggle buttons wrapping existing controls in {#if} blocks. ColorsPanel additionally adds a mini brand palette preview and fixes gradient direction/fade branching logic.

Changes

Collapsible panel sections across configurator

Layer / File(s) Summary
New $state visibility flags
configurator/src/components/panels/BordersPanel.svelte, ColorsPanel.svelte, EffectsPanel.svelte, LayoutPanel.svelte, MacrosPanel.svelte, MiscPanel.svelte, MotionPanel.svelte, ShadowsPanel.svelte, SpacingPanel.svelte, TypographyPanel.svelte, WcagPanel.svelte
Each panel declares new reactive boolean $state flags (e.g. showBorderColor, showBlur, showContainerWidths) to drive the new show/hide behavior for each subsection.
BordersPanel collapsible sections
configurator/src/components/panels/BordersPanel.svelte
Border color, widths, line styles, dividers, focus ring, radius scale, and radius preview sections are each wrapped in toggle-button-controlled {#if} blocks.
ColorsPanel collapsible sections + new features
configurator/src/components/panels/ColorsPanel.svelte
Brand sources, text contrast, and shade/tint curve sections become collapsible; a "Mini palettes — all brand colors" preview is added under the shade curve expanded state; gradient dir/fade branching conditions are corrected.
EffectsPanel collapsible sections
configurator/src/components/panels/EffectsPanel.svelte
Blur, opacity, scrim overlay, scrollbar, scroll shadow, and text shadow sections each receive a toggle button and {#if} wrapper around their controls and previews.
LayoutPanel collapsible sections
configurator/src/components/panels/LayoutPanel.svelte
Container widths, center wrapper, auto grid, header height, sticky offset, and sidebar sections are each made collapsible with toggle buttons.
MacrosPanel collapsible sections
configurator/src/components/panels/MacrosPanel.svelte
Flow rhythm, line clamp, aspect ratio, scroll shadow, and scrim overlay sections each get a toggle button and conditional rendering.
MiscPanel collapsible sections
configurator/src/components/panels/MiscPanel.svelte
Touch target, scroll behavior, z-index layers, text selection, focus ring style, component size scale, and caret & links sections are each wrapped in collapsible {#if} blocks.
MotionPanel collapsible sections
configurator/src/components/panels/MotionPanel.svelte
Global scale, theme transition, duration overrides, stagger base, easing curves, animation demo, and duration preview sections each become toggle-controlled.
ShadowsPanel collapsible sections
configurator/src/components/panels/ShadowsPanel.svelte
Shadow appearance, shadow color, glow, and elevation preview sections are each made collapsible; glow retains existing glowDisabled sub-logic inside its conditional block.
SpacingPanel collapsible sections
configurator/src/components/panels/SpacingPanel.svelte
Layout gap, density presets, modular scale, and space scale preview sections each become toggle-controlled collapsible blocks.
TypographyPanel collapsible sections
configurator/src/components/panels/TypographyPanel.svelte
Font families, per-type styles, body text, display type, modular scale, and scale preview sections each gain a toggle button and {#if} wrapper.
WcagPanel collapsible sections
configurator/src/components/panels/WcagPanel.svelte
Pair checker and contrast matrix sections each become toggle-controlled via showPairChecker and showMatrix state flags.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • codeslash-dev/SLASHED#423: Modifies BordersPanel.svelte to restructure border UI sections, directly overlapping with this PR's collapsible border section changes.
  • codeslash-dev/SLASHED#430: Modifies ColorsPanel.svelte around light/dark swatch preview rendering, overlapping with this PR's new mini brand palette preview addition.
  • codeslash-dev/SLASHED#431: Modifies ColorsPanel.svelte gradient editor logic and MacrosPanel.svelte controls, directly overlapping with this PR's gradient branching fix and macro collapsible sections.

Suggested labels

codex

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding collapsible sections across the configurator panels.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/color-controls-panel-m1j9di

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Add collapsible sections across configurator panels (with color curve mini palettes)
✨ Enhancement 🐞 Bug fix 🕐 40+ Minutes

Grey Divider

Description

• Add expand/collapse toggles to all major configurator panel sections to reduce clutter.
• Extend Colors panel with shade-curve mini palette previews and shared light/dark toggle.
• Hide direction/angle controls for “fade” gradients where direction is implicit.
Diagram

graph TD
  A["Configurator UI"] --> B["Panel components"] --> C["Section header button"] --> D("$state: showSection") --> E["{#if} section content"]
  B --> F["Colors panel"] --> G["Mini palettes preview"]
  F --> H{"�fade gradient?"} --> I["Hide dir/angle controls"]

  subgraph Legend
    direction LR
    _ui["UI component"] ~~~ _state("Reactive state") ~~~ _dec{"Decision"}
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Extract a reusable component
  • ➕ Removes repeated button/chevron/{#if} boilerplate across ~10 panels
  • ➕ Centralizes styling, keyboard/a11y behavior, and future changes (e.g., animations)
  • ➖ Requires a follow-up refactor across many files
  • ➖ May constrain per-panel layout nuances unless component is flexible
2. Data-driven sections (array of section descriptors)
  • ➕ Makes section lists easier to reorder/extend
  • ➕ Enables shared defaults (expanded/collapsed) and optional persistence
  • ➖ Harder to read/debug than explicit markup for complex sections
  • ➖ May require restructuring panel markup into render functions/snippets
3. Persist collapse state (localStorage or URL params)
  • ➕ Users keep preferred panel density across sessions
  • ➕ Supports sharing a “collapsed layout” via link (if URL-based)
  • ➖ Adds product/UX decisions and migration considerations
  • ➖ More edge cases (versioning keys, resets, SSR guards)

Recommendation: The PR’s explicit per-section $state + {#if} approach is pragmatic and low-risk for a broad UI sweep. Consider a follow-up to extract a small wrapper to reduce repetition and centralize any future accessibility/persistence improvements, but it’s reasonable to keep this PR focused on delivering the functionality consistently across panels.

Files changed (11) +1664 / -1115

Enhancement (11) +1664 / -1115
BordersPanel.svelteMake Borders panel sections collapsible +226/-163

Make Borders panel sections collapsible

• Introduces per-section $state booleans and replaces static section headers with toggle buttons showing ▲/▼. Wraps each section’s controls/previews in {#if} blocks so users can collapse Border color/widths/styles, Dividers, Focus ring, Radius scale, and Radius preview.

configurator/src/components/panels/BordersPanel.svelte

ColorsPanel.svelteAdd collapsible Colors sections + shade curve mini palettes + gradient control fix +64/-5

Add collapsible Colors sections + shade curve mini palettes + gradient control fix

• Adds collapsible toggles for Brand sources, Text contrast, and Shade/tint curve sections. Extends the shade curve area with a “mini palettes” preview grid across all brand colors and palette steps, tied to the existing light/dark preview toggle. Fixes gradient controls so direction/angle controls are not shown for fade gradients.

configurator/src/components/panels/ColorsPanel.svelte

EffectsPanel.svelteMake Effects panel sections collapsible +217/-162

Make Effects panel sections collapsible

• Adds $state flags and toggle headers for Blur, Opacity, Scrim, Scrollbar, Scroll shadow, and Text shadow. Each section’s inputs and previews are now conditionally rendered when expanded.

configurator/src/components/panels/EffectsPanel.svelte

LayoutPanel.svelteMake Layout panel sections collapsible +215/-162

Make Layout panel sections collapsible

• Adds per-section collapse state for Container widths, Center wrapper, Auto grid, Header height, Sticky offset, and Sidebar. Existing previews remain intact but are hidden when their section is collapsed.

configurator/src/components/panels/LayoutPanel.svelte

MacrosPanel.svelteMake Macros panel sections collapsible +148/-103

Make Macros panel sections collapsible

• Introduces collapse toggles for Flow rhythm, Line clamp, Aspect ratio, Scroll shadow, and Scrim overlay. Section content (sliders, presets, and previews) is wrapped in {#if} blocks controlled by $state booleans.

configurator/src/components/panels/MacrosPanel.svelte

MiscPanel.svelteMake Misc panel sections collapsible +264/-200

Make Misc panel sections collapsible

• Adds collapse toggles for Touch target, Scroll behavior, Z-index layers, Text selection, Focus ring style, Component size scale, and Caret & links. Moves each section’s controls and previews behind {#if} gates while preserving existing defaults (expanded).

configurator/src/components/panels/MiscPanel.svelte

MotionPanel.svelteMake Motion panel sections collapsible +188/-124

Make Motion panel sections collapsible

• Adds per-section show/hide state and header toggles for Global scale, Theme transition, Duration overrides, Stagger base, Easing curves, Animation demo, and Duration preview. Maintains existing behavior while allowing users to collapse demos/previews independently.

configurator/src/components/panels/MotionPanel.svelte

ShadowsPanel.svelteMake Shadows panel sections collapsible and regroup shadow settings +121/-86

Make Shadows panel sections collapsible and regroup shadow settings

• Adds collapsible headers for Shadow appearance, Shadow color, Glow, and Elevation preview. Restructures markup so Shadow color and Glow are clearly separated and each can be independently hidden without affecting token setting behavior.

configurator/src/components/panels/ShadowsPanel.svelte

SpacingPanel.svelteMake Spacing panel sections collapsible +139/-102

Make Spacing panel sections collapsible

• Adds collapse toggles for Layout gap, Density presets, Modular scale, and Space scale preview. Keeps existing inputs (sliders, ClampField, knob rows) but conditionally renders each group based on its $state flag.

configurator/src/components/panels/SpacingPanel.svelte

TypographyPanel.svelteMake Typography panel sections collapsible +61/-7

Make Typography panel sections collapsible

• Introduces $state booleans and toggle headers for Font families, Per-type styles, Body text, Display type, Modular scale, and Scale preview. Wraps each section’s controls in {#if} blocks so large typography controls can be collapsed when not in use.

configurator/src/components/panels/TypographyPanel.svelte

WcagPanel.svelteMake WCAG panel sections collapsible +21/-1

Make WCAG panel sections collapsible

• Adds show/hide toggles for the Pair checker and Contrast matrix sections. The checker UI and matrix table are conditionally rendered based on per-section $state flags.

configurator/src/components/panels/WcagPanel.svelte

@coderabbitai coderabbitai Bot added the codex label Jun 27, 2026
Every section header in Borders, Effects, Layout, Macros, Misc, Motion,
Shadows, Spacing, Typography, and WCAG panels now toggles open/closed with
a chevron button. Sections default to open; previously collapsed-by-default
sections (e.g. Fine-tune, Bento, Prose) keep their existing defaults.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016G1SLZmmZy4d71nYpotZbX
@jackgranatowski
jackgranatowski force-pushed the claude/color-controls-panel-m1j9di branch from 288dc9b to 3572c3a Compare June 27, 2026 21:10
@qodo-code-review

qodo-code-review Bot commented Jun 27, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 6 rules

Grey Divider


Remediation recommended

1. Hidden autofix recomputation ✓ Resolved 🐞 Bug ➹ Performance
Description
In WcagPanel, the auto-fix $effect can still call computeFix() even when the new Pair checker
section is collapsed, because showPairChecker doesn’t gate the effect. This triggers unnecessary CPU
work (the fix search loop) on preview/override changes despite the UI being hidden.
Code

configurator/src/components/panels/WcagPanel.svelte[R150-155]

      suggestion = null;
    }
  });
+
+  let showPairChecker = $state(true);
+  let showMatrix      = $state(true);
Relevance

⭐⭐ Medium

No direct precedent; team accepts perf guards/caching in configurator UI ($effect work reduction) in
PRs 430,312.

PR-#430
PR-#312

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
computeFix() contains a loop over lightness values and is called from an always-active $effect
that does not reference showPairChecker, so it can run even when Pair checker content is hidden
behind {#if showPairChecker}.

configurator/src/components/panels/WcagPanel.svelte[113-176]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
WcagPanel introduces `showPairChecker` to collapse the Pair checker UI, but the auto-fix `$effect` that may run `computeFix()` is not conditioned on `showPairChecker`. As a result, the expensive suggestion recomputation can still happen while the Pair checker is hidden.

## Issue Context
`computeFix()` performs a search loop over OKLCH lightness values and is invoked from the `$effect` when the current pair fails the target contrast. Collapsing the Pair checker should ideally avoid this work.

## Fix Focus Areas
- configurator/src/components/panels/WcagPanel.svelte[113-155]

## Suggested fix
Update the `$effect` to early-return when `showPairChecker` is false (and clear `suggestion`), ensuring `previewVersion`, `pairRatio`, etc. are not dependencies while collapsed. For example:

- First line inside `$effect`: `if (!showPairChecker) { suggestion = null; return; }`
- Only after that, read `previewVersion.value`, `pairRatio`, etc., and conditionally call `computeFix()`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@configurator/src/components/panels/BordersPanel.svelte`:
- Around line 97-103: The accordion toggle buttons in BordersPanel.svelte only
update the visual chevron and do not expose their open/closed state to assistive
tech. Update the border section toggle buttons in the panel to include
aria-expanded bound to the corresponding boolean state and add aria-controls
pointing at the collapsible content region, using the existing
showBorderColor-style state variables and button handlers as the pattern. Apply
the same accessibility pattern consistently to the other section toggles in this
panel so screen readers can identify the expanded/collapsed state.

In `@configurator/src/components/panels/EffectsPanel.svelte`:
- Around line 210-219: The scrollbar track color row in EffectsPanel.svelte is
using an invalid fallback for <input type="color"> by passing "transparent" for
the --sf-scrollbar-track token. Update the row config and the value handling in
the each block so the color input always receives a valid opaque color string,
and keep any transparency/reset behavior separate from the picker value. Use the
existing row.token, row.val, and row.default setup to locate the change.

In `@configurator/src/components/panels/MacrosPanel.svelte`:
- Around line 81-87: The section toggle buttons in MacrosPanel.svelte do not
expose their open/closed state to assistive tech. Update the toggle buttons that
flip showFlow, showPalette, showPresets, showCustomStyles, and showImportText to
include aria-expanded bound to the corresponding boolean, and add aria-controls
pointing to the related collapsible section element so screen readers can
announce the state.

In `@configurator/src/components/panels/MiscPanel.svelte`:
- Around line 65-71: Add accessible expand/collapse state to the collapsible
header buttons in MiscPanel.svelte. Update each toggle button (the touch target
and the other section headers in the same pattern) to expose its open/closed
state with aria-expanded and connect it to the controlled content using a
matching aria-controls/id relationship. Use the existing toggle state variables
and section wrapper elements so assistive tech can track which panel is
expanded.

In `@configurator/src/components/panels/MotionPanel.svelte`:
- Around line 122-128: The section toggle buttons in MotionPanel.svelte do not
expose their expanded/collapsed state to assistive tech. Update each toggle
button that flips showGlobalScale and the other section state flags to include
aria-expanded tied to the same boolean, and add aria-controls pointing at the
corresponding collapsible content container. Make sure the hidden motion
controls in the related sections are associated with the correct toggle so
screen readers announce state changes properly.
- Around line 154-159: The Dark/light switch speed control in MotionPanel.svelte
is still using the default scale-derived value instead of the actual theme
transition token. Update the SliderRow binding to use themeTransition so it
reflects --sf-theme-transition-duration consistently, and keep the
onChange/onReset handlers tied to that same token to avoid the jump when the
override is already present.

In `@configurator/src/components/panels/ShadowsPanel.svelte`:
- Around line 44-50: The shadow-section toggle buttons in ShadowsPanel.svelte
only expose state via the ▲/▼ glyph; add an aria-expanded binding to each toggle
button so assistive tech can read the expanded/collapsed state. Update the
button elements associated with showShadowAppearance and the other shadow
section state toggles in the same component to reflect their boolean state
through aria-expanded, keeping the visible label/icon behavior unchanged.

In `@configurator/src/components/panels/SpacingPanel.svelte`:
- Around line 71-77: The collapsible section headers in SpacingPanel.svelte
currently toggle visually but do not expose their state to assistive tech.
Update each header button (including the showLayoutGap toggle and the other
section toggles referenced in the panel) to include aria-expanded bound to the
corresponding open state and aria-controls pointing to the matching collapsible
content container. Use the existing toggle state variables in
SpacingPanel.svelte to keep the button semantics synchronized with the
open/closed sections.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 89d4a61d-635b-414b-8f0d-e068bfbfb6a0

📥 Commits

Reviewing files that changed from the base of the PR and between e7269a9 and 288dc9b.

📒 Files selected for processing (11)
  • configurator/src/components/panels/BordersPanel.svelte
  • configurator/src/components/panels/ColorsPanel.svelte
  • configurator/src/components/panels/EffectsPanel.svelte
  • configurator/src/components/panels/LayoutPanel.svelte
  • configurator/src/components/panels/MacrosPanel.svelte
  • configurator/src/components/panels/MiscPanel.svelte
  • configurator/src/components/panels/MotionPanel.svelte
  • configurator/src/components/panels/ShadowsPanel.svelte
  • configurator/src/components/panels/SpacingPanel.svelte
  • configurator/src/components/panels/TypographyPanel.svelte
  • configurator/src/components/panels/WcagPanel.svelte

Comment thread configurator/src/components/panels/BordersPanel.svelte
Comment thread configurator/src/components/panels/EffectsPanel.svelte
Comment thread configurator/src/components/panels/MacrosPanel.svelte
Comment on lines +65 to +71
<button
onclick={() => { showTouchTarget = !showTouchTarget; }}
class="w-full flex items-center justify-between cursor-pointer"
>
<div class="text-[10px] font-bold text-slate-500 uppercase tracking-widest">Touch target</div>
<span class="text-[10px] text-slate-500">{showTouchTarget ? "▲" : "▼"}</span>
</button>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Add accessible state to the collapsible headers.

The new toggle buttons only expose the state visually via ▲/▼. Please add aria-expanded and wire each button to its controlled section so assistive tech can follow the expand/collapse state.

Also applies to: 97-103, 126-132, 160-166, 216-222, 255-261, 298-304

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@configurator/src/components/panels/MiscPanel.svelte` around lines 65 - 71,
Add accessible expand/collapse state to the collapsible header buttons in
MiscPanel.svelte. Update each toggle button (the touch target and the other
section headers in the same pattern) to expose its open/closed state with
aria-expanded and connect it to the controlled content using a matching
aria-controls/id relationship. Use the existing toggle state variables and
section wrapper elements so assistive tech can track which panel is expanded.

Comment thread configurator/src/components/panels/MotionPanel.svelte
Comment thread configurator/src/components/panels/MotionPanel.svelte
Comment thread configurator/src/components/panels/ShadowsPanel.svelte
Comment on lines +71 to +77
<button
onclick={() => { showLayoutGap = !showLayoutGap; }}
class="w-full flex items-center justify-between cursor-pointer"
>
<div class="text-[10px] font-bold text-slate-500 uppercase tracking-widest">Layout gap</div>
<span class="text-[10px] text-slate-500">{showLayoutGap ? "▲" : "▼"}</span>
</button>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the spacing-section headers announce their open/closed state.

The buttons work visually, but without aria-expanded/aria-controls the new collapsible sections are opaque to screen readers.

Also applies to: 110-116, 140-146, 199-205

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@configurator/src/components/panels/SpacingPanel.svelte` around lines 71 - 77,
The collapsible section headers in SpacingPanel.svelte currently toggle visually
but do not expose their state to assistive tech. Update each header button
(including the showLayoutGap toggle and the other section toggles referenced in
the panel) to include aria-expanded bound to the corresponding open state and
aria-controls pointing to the matching collapsible content container. Use the
existing toggle state variables in SpacingPanel.svelte to keep the button
semantics synchronized with the open/closed sections.

claude added 2 commits June 27, 2026 21:16
- Add .claude/hooks/session-start.sh: runs npm install + npm run prepare
  on every remote session start, wiring .githooks so the commit-msg hook
  runs commitlint before each commit — prevents recurring lint failures
- Update .gitignore: stop ignoring all of .claude/; ignore only lock/cache
  files so settings.json and hooks/ are tracked in the repo
- Add aria-expanded to all 67 collapsible section toggle buttons across
  all panels so screen readers can announce the open/closed state
- Fix MotionPanel theme transition slider: bind to themeTransition derived
  value instead of Math.round(300 * scale) (wrong when token is overridden)
- Fix EffectsPanel scrollbar track color input: use #000000 as picker
  fallback instead of "transparent" (browsers reject transparent in color
  inputs)
- Fix WcagPanel $effect: early-exit when pair checker is collapsed to skip
  the lightness-search loop; move showPairChecker declaration before the
  effect that references it

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016G1SLZmmZy4d71nYpotZbX
Duplicate aria-expanded attribute on the "More layout primitives" toggle
caused svelte-check to fail with attribute_duplicate error, breaking CI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016G1SLZmmZy4d71nYpotZbX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants